#include "sql_list.h"

/*
函数名 Init_sql_list
参数
        @L 需要初始化的静态表
返回值
    无
功能
    对静态表进行初始化
*/

void Init_sql_list(sql_list * L)
{
    //对创建的数据做清空
    memset(L->data,0,50*sizeof(L->data[0]));
    //初始化表的长度
    L->len=0;
}

/*尾插
函数名 tail_sql_list
参数
    @L  需要尾插的 静态表
    @data   需要插入的数据
返回值
    无
功能
    对静态表进行尾插
*/
void tail_insert_list(sql_list * L,Element_data data)
{
    //安全判断
    if(NULL==L)
    {
        printf("顺序表 为 NULL\n");
        return ;
    }
    if(MAX_SIZ <= L->len)
    {
        printf("顺序表 为 满\n");
        return ;
    }

    //插入
    L->data[L->len]=data;
    //迭代
    L->len++;
}

/*尾删
函数名 tail_del_list
参数
    @L 需要尾删的 静态表
返回值
    无
功能
    对静态表进行尾差
*/
void tail_del_list(sql_list * L)
{
    //安全判断
    if(NULL==L)
    {
        printf("静态表 为 空\n");
        return ;
    }
    if(0 >= L->len)
    {
        printf("表内 无 数据\n");
        return ;
    }

    //memset(&L->data[L->len],0,sizeof(L->data[0]));

    L->len--;
}

/** 遍历打印
 * 函数名 printf_Sql_List
 * 参数 
 *      @L 需要遍历的 静态表
 * 返回值
 *      无
 * 功能
 *      对静态表进行尾插
 */
void printf_sql_list(sql_list * L)
{
    //安全判断
    if(NULL==L)
    {
        printf("顺序表 为 NULL\n");
        return ;
    }
    if (0 == L->len)
    {
        printf("顺序表 内 无数据 \n");
        return ;
    }
    for (size_t i = 0; i < L->len; i++)
    {
        printf("姓名:%s 性别:%s 年龄:%d 成绩:%d 学号:%d\n",
        L->data[i].name , L->data[i].sex , L->data[i].age , 
        L->data[i].sco  , L->data[i].id 
        );
    }
}

//任意位置插入
void pos_insert_list(sql_list * L,int index,Element_data data)
{
    //安全判断
    if(NULL==L)
    {
        printf("顺序表 为 空\n");
        return ;
    }
    if(MAX_SIZ<=L->len)
    {
        printf("顺序表 为 满\n");
        return ;
    }
    for(size_t i=L->len;i>=index;i--)
    {
        L->data[i+1]=L->data[i];
    }
    L->data[index]=data;
    L->len++;
}


//任意位置删除
void pos_del_list(sql_list * L,int index)
{
    //安全判断
    if(NULL==L)
    {
        printf("顺序表 为 空\n");
        return ;
    }
    if(0==L->len)
    {
        printf("表内无数据\n");
        return ;
    }
    for(size_t i=index-1;i<=(L->len)-1;i++)
    {
        L->data[i]=L->data[i+1];
    }
    L->len--;
}